// 解题思路：
// 这是一种新的排序规则：要求 ba > ab
// 因此可以写一个比较器，通过 sort 库函数完成排序
// 首先需要将两个数字拼接出来，即 ba 和 ab，再比较两个拼接数字的大小
// 数字直接拼接比较复杂，需要搞清楚每个数字有多少位，这里可以优化成拼接字符串
// 因此将数组中所有数字都转化成字符串，之后使用字符串 compareTo() 方法比较大小，进行排序
// 再将排好序的字符串追加到 ret 的后面
// 如果 ret 是 0 开头，就表示这个数字是 0，返回 "0"
// 否则直接返回 ret.toString()

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public String largestNumber(int[] nums) {
        int n = nums.length;
        String[] str = new String[n];
        for(int i = 0; i < n; i++){
            str[i] = "" + nums[i];
        }

        Arrays.sort(str, (a, b) -> {
            return (b + a).compareTo(a + b);
        });

        StringBuilder ret = new StringBuilder();
        for(String s : str){
            ret.append(s);
        }
        if(ret.charAt(0) == '0') return "0";
        return ret.toString();
    }
}